/*
 * TareaService.java
 *
 * Created on 24 de enero de 2008, 06:52 PM
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package perucuy.services;
import java.util.List;
import org.apache.log4j.Logger;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;
import perucuy.dao.DAOFactory;
import perucuy.dao.PartoDAO;
import perucuy.transfers.AlertaTO;
import perucuy.transfers.NucleoTO;
import perucuy.transfers.ParametroTO;
import perucuy.transfers.PartoTO;
import perucuy.transfers.ReproductoraTO;
import perucuy.utils.Funciones;
import static perucuy.utils.Funciones.esVacio;
/**
 *
 * @author OMATEO
 */
public class PartoService {
    
    private static Logger log = Logger.getLogger(PartoService.class);
    
    PartoDAO dao = DAOFactory.getDAOFactory(DAOFactory.Tipo.SQLMAP).getPartoDAO();
    
    public void registrarParto(PartoTO parto) {
        parto.setNCodReproductora(2);
       /*Crear el registro del parto*/        
        dao.create(parto);        
        AlertaService alertasrv = new AlertaService();
        NucleoService nucleosrv = new NucleoService();
        ReproductoraService reprosrv= new ReproductoraService();
        ParametroService psv = new ParametroService();
        log.debug("Guardo datos de la Parto ");
        
        AlertaTO alerta = new AlertaTO();
        NucleoTO nucleo = new NucleoTO();
        ReproductoraTO reproductora = new ReproductoraTO();
        
        ParametroTO p = psv.getValorCampo("T_REGLAS","NdiasDestete",1);
        String dias=p.getVDscValor().trim();
        log.debug("Dias a aumentar: "+dias);
        if (dias==null) dias="0";
        alerta.setDFchEjeAlerta(Funciones.fechaActualAumenta(Integer.parseInt(dias)));
                
        /*Crear el registro de la Alerta*/
        alerta.setNCodParto(parto.getNCodParto());
        alerta.setNDiasAlerta(Integer.parseInt(p.getVDscValor().trim()));        
        alertasrv.registrarAlerta(alerta);        
        /*Actualizar el Nro de partos en reproductora*/
        ReproductoraTO rep= reprosrv.getReproductora(parto.getNCodReproductora());
        /*reproductora.setCodigo(parto.getNCodReproductora());*/
        log.debug("Se va a actualizar reproductora");
        reprosrv.registrarParto(reproductora);
        log.debug("Se ha actualizando la cantidad del nucleo");
        /*Actualizar el Nro de gazapos del nucleo*/
        if (reproductora.getorigen()!=null) nucleo.setNCodNucleo(Integer.parseInt(reproductora.getorigen()));
        nucleo.setNCanGazNucleo(parto.getNNumCriasVivas());
        log.debug("Se va a actualizar cantidad nucleo");
        nucleosrv.actualizarCantNucleo(nucleo);        
        log.debug("Fin de proceso");
    }

    public void actualizarParto(PartoTO Parto) {
        dao.actualizar(Parto);
        log.debug("Actualizo los datos del Parto ");
    }
    
    public PartoTO getParto(int id) {
        return dao.dameParto(id);
    }
    public List getPartos() {
        return dao.listado();
    }
    public List getPartos(int campo, String valor) {
        return dao.listado(campo, valor);
    }
    public int eliminarParto(int id) {
        return dao.eliminarParto(id);
    }
    public boolean existenError(PartoTO Parto, ActionMessages msgs) {
        int error = 0;
 
        if (esVacio(Parto.getDFechaParto())) {
            error++;
            msgs.add("error3",new ActionMessage("errores.select","Fecha del parto"));
        }
     
        /*if (esVacio(Parto.getNCodReproductora())) {
            error++;
            msgs.add("error4",new ActionMessage("errores.buscar","Codigo de reproductora"));
        } */
        if (error > 0) {
            return true;
        }
        return false;
    }
}
